﻿using System;
using System.Collections.Generic;

namespace FinanSoft.Utilities
{
    public class Constants
    {
        public enum OrderType
        {
            buy,
            sale,
            goodsReceiptBuy,
            goodsReceiptSale,
            billProviders, 
            billClients

        }

        public enum InventoryMovementType
        {
            entry, output
        }

        public enum AccountingEntryType
        {
            debit,
            credit
        }

        public enum AccountType
        {
            active,
            passive,
            capital,
            income,
            outcome,
            oincome,
            ooutcome,

        }

        public enum AuxiliarAccountType
        {
            client = 1,
            provider = 2
        }

        public enum AuxiliarEntryType
        {
            person = 1,
            company = 2
        }

        public enum AccountStatus
        {
            alive,
            erased,
        }

        public enum CurrencyType
        {
            system,
            local,
            added,
            invalid
        }

        public enum ValidationCode
        {
            LoginFailed,
            LoginSucceeded,
            ConnectionFailed
        }

        public enum ReportType
        {
            balanceSheet,
            trialBalance,
            incomeStatement
        }

        public enum SpecialType
        {
            sale,
            // Partidas extraordinarias
            extraordinaryIncome,
            retainedEarnings,
            incomeTax,
            dividends,
            profitAndLoss,
            dividiendsToPay,
            incomeTaxToPay,
            bankingAccount,
            allocationInventory,
            salesTaxToPay,
            salesRefund,
            normal
        }

        public enum SeasonStatus
        {
            opened,
            closed,
            openedExceptSales
        }

        #region Information Messages
        public const String ACCOUNTING_CLOSE_REFERENCE_MSG = "Asiento de pérdidas y ganancias del cierre contable";
        public const String ACCOUNTING_CLOSE_REFERENCE_MSG2 = "Asiento de utilidades retenidas contra pérdidas y ganancias del cierre contable";
        public const String INCOME_STATEMENT_ENTIRES_REFERENCE_MSG = "Asiento de impuesto de renta contra impuesto de renta por pagar para el estado de resultados";
        public const String INCOME_STATEMENT_ENTIRES_REFERENCE_MSG2 = "Asiento de dividendos contra dividendos por pagar para el estado de resultados";
        public const String PAYMENT_REFERENCE = "Asiento de cancelación de factura";
        public const String INVENTORY_TRANSFER_REFERENCE = "Asiento de transferencia de inventario";
        #endregion

        #region Error Values
        public const int INVALID_ID = -1;
        #endregion

        #region Error Messages
        public const String ERROR_DB_CONNECTION = "Error en la conexión con la base de datos";

        public const String ERROR_MORE_LOCAL_CURRENCIES = "Existe más de una moneda local en la base de datos.";
        public const String ERROR_MORE_SYSTEM_CURRENCIES = "Existe más de una moneda del sistema en la base de datos.";
        public const String ERROR_MISSING_LOCAL_CURRENCY = "No hay moneda local en la base de datos";
        public const String ERROR_MISSING_SYSTEM_CURRENCY = "No hay moneda del sistema en la base de datos";
        public const String ERROR_CURRENCY_DELETE_FAILED = "Falló eliminación de moneda. (¿Tiene cuentas asociadas?)";

        public const String ERROR_ACCOUNTING_ENTRY_UNBALANCED = "Falló el registro del asiento. Los créditos y débitos no están balanceados";
        public const String ERROR_ACCOUNTING_ENTRY_REGISTRY = "Error en el registro del asiento, por favor verifique y vuelva a intentarlo";
        public const String ERROR_ACCOUNTING_ENTRY_INVALID_ACCOUNTS = "Error en las cuentas, verifique que no estén repetidas";
        public const String ERROR_NO_DETAILS_ASSOCIATED = "Error, no hay movimientos asociados al asiento, por favor verifique y vuelva a intentarlo";

        public const String ERROR_ACCOUNTING_ENTRIES_CACHE_UPDATE = "Error al intentar actualizar la lista de asientos con los parametros de filtro proporcionados";
        public const String ERROR_ACCOUNTING_ENTRIES_CACHE_NO_NEXT_ELEMENT = "No existe un asiento siguiente para este filtro particular";
        public const String ERROR_ACCOUNTING_ENTRIES_CACHE_NO_PREVIOUS_ELEMENT = "No existe un asiento anterior para este filtro particular";
        public const String ERROR_ACCOUNTING_ENTRIES_CACHE_EMPTY = "No existe asientos que calcen con este filtro particular";

        public const String ERROR_STORE_ROOM_READING = "Error al recuperar las bodegas";
        public const String ERROR_NEW_STORE_ROOM_FAILED = "Error al intentar guardar los datos de la nueva bodega";

        public const String ERROR_NEW_ARTICLE_DOCUMENT_FAILED = "Error al intentar guardar los datos del Articulo en la Orden";
        public const String ERROR_ARTICLE_DOCUMENT_READING = "Error al recuperar documento de articulos";

        public const String ERROR_ARTICLE_READING = "Error al recuperar los articulos";
        public const String ERROR_STORE_ROOM_ARTICLE_READING = "Error al recuperar los articulos de las bodegas Respectivas";

        public const String ERROR_IMPUESTOS_READING = "Error al recuperar los Impuestos";

        public const String ERROR_UM_READING = "Error al recuperar las unidades de medida";

        public const String ERROR_ACCOUNTING_CATALOG_READING = "Error al recuperar el catálogo contable";
        public const String ERROR_NEW_ACCOUNT_FAILED = "Error al guardar la nueva cuenta creada.";
        public const String ERROR_DELETE_ACCOUNT_FAILED = "Error al intentar borrar la cuenta. (Recordatorio: No es posible eliminar cuentas con cuentas hijas)";
        public const String ERROR_EDIT_ACCOUNT_FAILED = "Error al editar la cuenta existente.";

        public const String ERROR_ACCOUNT_NOT_FOUND = "Error: La cuenta padre no ha sido encontrada en el catálogo.";
        public const String ERROR_ACCOUNT_FATHER_TITLE = "Error: La cuenta tomada como padre no es un título, por lo que no se le puede agregar cuentas hijo";
        public const String ERROR_ACCOUNT_FATHER_NOTITLE = "Error: La cuenta que se intenta eliminar es de las principales";
        public const String ERROR_ACCOUNT_DELETE = "Error: La cuenta que se intenta eliminar puede que posea cuentas activas";
        public const String ERROR_ACCOUNT_EDIT_PRINCIPAL = "Error: La cuenta que se intenta editar es de las cuentas principales";
        public const String ERROR_ACCOUNT_MAX_LEVEL = "Error: No pueden crearse más de 5 niveles en el árbol";
        public const String ERROR_ACCOUNT_CODE_FAILED = "Error: Ya existe una cuenta con dicho código.";
        public const String ERROR_ACCOUNTING_PERIOD_READING = "Error al recuperar los Periodos";
        public const String ERROR_NEW_PERIOD_FAILED = "Error al guardar el nuevo Periodo Guardado.";
        public const String ERROR_NEW_SEASON_FAILED = "Error al guardar la nueva Temporada creada.";

        public const String ERROR_LOGIN_FAILED = "Error: El usuario especificado no es el correcto, por favor verifique que el nombre de usuario y contraseña sean correctos";

        public const String ERROR_MOD_SEASON_FAILED = "Error al modificar una Temporada";

        public const String ERROR_NEW_PAY_COND = "Error al intentar guardar los datos de la nueva condición de pago";
        public const String ERROR_PAY_COND_EXISTS = "Error ya existe una condición de pago con este nombre";
        public const String ERROR_DELETE_PAY_COND = "Error al intentar eliminar la condición de pago";
        public const String ERROR_GET_AUXILIAR_ACCOUNTS = "Error al intentar recuperar la lista de cuentas auxiliares";
        public const String ERROR_GET_PAY_COND_LIST = "Error al intentar recuperar los de tipos de condición de pago disponibles";

        public const String ERROR_MOD_COMPANY_FAILED = "Error al modificar una Compañía";

        public const String ERROR_SPECIAL_ACCOUNT_TYPE_READING = "Error al recuperar los Tipos Especiales de Cuentas";
        public const String ERROR_SPECIAL_ACCOUNT_READING = "Error al recuperar las cuentas especiales";
        public const String ERROR_NOT_SPECIAL_ACCOUNT_READING = "Error al recuperar las cuentas no especiales";
        public const String ERROR_NEW_SPECIAL_ACCOUNT_FAILED = "Error al guardar la cuenta como nueva cuenta especial";
        public const String ERROR_DELETE_SPECIAL_ACCOUNT_FAILED = "Error al intentar borrar la cuenta de la lista de cuentas especiales";

        public const String ERROR_AUXILIAR_ACCOUNT_UPDATE_FAILED = "Error en la actualización de las cuentas auxiliares.";

        public const String ERROR_OPEN_DOCS_READING = "Error al recuperar los documentos abiertos";

        public const String ERROR_DOC_READING = "Error al recuperar el documento solicitado";

        public const String ERROR_INVALID_DATABASE_PROVIDED = "Error al conectarnos a la base de datos. ¿Está seguro que la base de datos es la correcta?";

        public const String ERROR_ACCOUNTING_CLOSE_ACC_MISSING = "Error al hacer el cierre contable, falta la cuenta de pérdidas y ganancias o de utilidades retenidas.";
        public const String ERROR_NO_SEASONS_ASSOCIATED = "Error al hacer el cierre contable: El periodo que seleccionó no tiene temporadas asociadas.";
        public const String ERROR_PROFIT_AND_LOSS_FAILED = "Error en el registro del asiento de pérdidas y ganancias contra gastos e ingresos.";
        public const String ERROR_RETAINED_EARNINGS_FAILED = "Error en el registro del asiento de utilidades retenidas contra pérdidas y ganancias.";
        public const String ERROR_DIVIDENDS_FAILED = "Error en el registro del asiento de utilidades retenidas contra dividendos";
        public const String ERROR_INCOME_STATEMENT_ENTRIES_ACC_MISSING = "Error al hacer los asientos del estado de resultados, falta alguna de las siguientes cuentas: dividendos, dividendos por pagar, impuesto de renta o impuesto de renta por pagar.";
        public const String ERROR_DIVIDENDS_TO_PAY_FAILED = "Error en el registro de dividendos contra dividendos por pagar.";
        public const String ERROR_INCOME_TAX_TO_PAY_FAILED = "Error en el registro de impuesto de renta contra impuesto de renta por pagar.";

        public const String ERROR_DB_CONNECTION_FAILED_STATUS_SEASON = "Error en la conexión con la base de datos al intentar obtener los estados de las temporadas.";
        public const String ERROR_MISSING_SEASON_STATUS = "Error al intentar obtener los estados de temporadas de la base de datos. Uno o más estados no se encontraban.";

        public const String NO_CURRENT_PERIOD_ESTABLISHED = "No se ha establecido un periodo contable para el día actual.";
        public const String NO_CURRENT_SEASON_ESTABLISHED = "No se ha establecido una temporada contable para el día actual.";
        public const String TRANSFER_ERROR = "Error al realizar transferencias bancarias.";           

        public const String ERROR_NEW_ITEM_FAILED = "Error al intentar guardar los datos del articulo";
        public const String ERROR_NEW_ITEM_CODE_FAILED = "El codigo de articulo digitado ya existe";

        public const String ERROR_DELETE_ITEM_FAILED = "Error al intentar eliminar el articulo debido a que tiene transacciones asociadas a el";

        public const String ERROR_NO_DOCTYPE_LIST = "Error la lista de tipos de documentos no ha sido encontrada.";
        public const String ERROR_UNCANCELLED_DOC_READING = "Error no se pudieron obtener los encabezados de los documentos no cancelados de compra y venta";
        public const String ERROR_NO_UNCANCELLED_DOCS = "Error no hay documentos sin cancelar.";
        public const String ERROR_NO_ARTICLES_FOR_DOC = "Error: no se pudieron obtener los artículos para el documento elegido.";
        public const String ERROR_NO_SUCH_DOC_FOUND = "No se encontró el documento para el código y tipo de documento especificado.";
        public const String ERROR_SAVING_DOC = "Error al intentar guardar el documento contable.";
        public const String ERROR_SAVING_DOCS_ARTICLES = "Error al intentar guardar los artículos para el documento.";
        public const String ERROR_SAVING_DOCS_SERVICES = "Error al intentar guardar los servicios de el documento.";

        public const String ERROR_UPDATE_UNIT_COST = "Error al intentar actualizar el costo unitario del artículo.";
        public const String ERROR_UPDATE_ADDED_STOCK = "Error al intentar actualizar la cantidad en stock del artículo";
        public const String NO_ENOUGH_UNITS = "No hay suficientes unidades del artículo para hacer la salida de inventario.";

        public const String ERROR_NO_SESSIONID_VALID = "Error la actual sesión de usuario no ha sido identificada";
        public const String ERROR_NO_DB_COMPANY = "Error no se encontró la base de datos asociada a la compañía";

        public const String ERROR_STORE_NOT_EMPTY = "No se puede eliminar la bodega pues tiene artículos en stock, comprometido o solicitado.";
        public const String ERROR_STORE_WITH_ENTRIES = "No se puede eliminar la bodega pues tiene documentos asociados.";

        public const String ERROR_TAX_INSERTION_FAILED = "Error al insertar el nuevo tipo de impuesto.";
        public const String ERROR_TAX_ALREADY_EXISTS = "Error, el acrónimo que ingresó ya está asociado a un tipo de impuesto.";
        public const String ERROR_TAX_DELETE_FAILED = "Error al eliminar el tipo de impuesto, tiene documentos asociados.";

        public const String ERROR_UPDATING_DOC_ID = "Error al intentar actualizar el id del documento insertado";
        public const String ERROR_REPORT_CONNECTION_FAILED = "Error con la base de datos al intentar generar el reporte.";
        #endregion

        #region General XML Tags
        public const String ROOT_NODE_BEGINNING = "<Principal>";
        public const String ROOT_NODE_ENDING = "</Principal>";
        public const String FILTER_NODE_BEGINNING = "<Filtros>";
        public const String FILTER_NODE_ENDING = "</Filtros>";
        public const String TAG_NAME_VALUE = "Valor";
        #endregion

        #region Money XML Tags
        public const String TAG_NAME_CURRENCY_SYMBOL = "Simbolo";
        public const String TAG_NAME_CURRENCY_ID = "IdMoneda";
        public const String TAG_NAME_CURRENCY_ABBREVIATION = "Abreviacion";
        public const String TAG_NAME_CURRENCY_TO_LOCAL_AMOUNT = "MontoCambio";
        public const String TAG_NAME_CURRENCY_NAME = "NombreMoneda";
        public const String TAG_NAME_CURRENCY_TYPE_NAME = "Nombre";
        #endregion

        #region Account XML Tags
        public const String TAG_NAME_ACCOUNT_FOREIGN_NAME = "NombreExtranjero";
        public const String TAG_NAME_ACCOUNT_ID = "IdCuenta";
        public const String TAG_NAME_ACCOUNT_TITLE = "EsTitulo";
        public const String TAG_NAME_ACCOUNT_CURRENCYID = "IdMoneda";
        public const String TAG_NAME_ACCOUNT_NAME = "Nombre";
        public const String TAG_NAME_ACCOUNT_TYPE = "Tipo";
        public const String TAG_NAME_ACCOUNT_CODE = "Codigo";
        public const String TAG_NAME_ACCOUNT_LOCAL_AMOUNT = "MontoLocal";
        public const String TAG_NAME_ACCOUNT_SYS_AMOUNT = "MontoSistema";
        public const String TAG_NAME_ACCOUNT_AL_DEBE = "AlDebe";
        public const String TAG_NAME_AUXILIAR_ACCOUNT_ID = "IdCuentaAuxiliar";
        #endregion

        #region Period XML Tags
        public const String TAG_NAME_PERIOD_ID = "IdPeriodoContable";
        public const String TAG_NAME_PERIOD_NOMBRE = "Nombre";
        public const String TAG_NAME_PERIOD_ID_TIPO = "IdTipoPeriodo";
        public const String TAG_NAME_PERIOD_FECHA_INICIO = "FechaInicio";
        public const String TAG_NAME_PERIOD_FECHA_FIN = "FechaFin";
        #endregion

        #region Season XML Tags
        public const String TAG_NAME_SEASON_ID = "IdTemporadaPeriodo";
        public const String TAG_NAME_SEASON_NOMBRE = "NombreTemporada";
        public const String TAG_NAME_SEASON_STATUS = "IdEstadoTemporada";
        public const String TAG_NAME_SEASON_START_DATE = "FechaInicio";
        public const String TAG_NAME_SEASON_END_DATE = "FechaFin";
        public const String TAG_NAME_SEASON_INITIAL_DUE_DATE = "FechaVencimientoInicial";
        public const String TAG_NAME_SEASON_END_DUE_DATE = "FechaVencimientoFinal";
        #endregion

        #region Company XML Tags
        public const String TAG_COMPANIES = "Empresas";
        public const String TAG_COMPANY = "Compania";
        public const String TAG_COMPANY_NAME = "Nombre";
        public const String TAG_COMPANY_DATA_BASE = "BaseDatos";
        public const String TAG_COMPANY_SELECTED = "EmpresaSeleccionada";
        public const String NAME_DATA_BASE = "ERPSIADB";
        public const String DIRECTORY_COMPANIES = "../../../../Empresas.xml";
        public const String DIRECTORY_COMPANY = "../../../../Compania.xml";




        #endregion

        #region Accounting Entry Details XML Tags
        public const String NODE_NAME_ACCOUNT = "Cuenta";
        public const String NODE_NAME_DETAIL = "Detalle";
        public const String NODE_NAME_ACCOUNTING_ENTRY = "Asiento";
        public const String TAG_NAME_ACCOUNTING_ENTRY_DETAIL_ID = "IdDetalle";
        public const String TAG_NAME_ACCOUNTING_ENTRY_ACCOUNT_ID = "IdCuenta";
        public const String TAG_NAME_ACCOUNTING_ENTRY_AUX_ACCOUNT_ID = "IdCuentaAux";
        public const String TAG_NAME_ACCOUNTING_ENTRY_TYPE = "TipoCrecimiento";
        public const String TAG_NAME_ACCOUNTING_ENTRY_CURRENCY = "Moneda";
        public const String TAG_NAME_ACCOUNTING_ENTRY_TYPE_DEBIT = "Debe";
        public const String TAG_NAME_ACCOUNTING_ENTRY_TYPE_CREDIT = "Haber";
        public const String TAG_NAME_AMMOUNT = "Monto";
        public const String TAG_NAME_LOCAL_AMMOUNT = "MontoLoc";
        public const String TAG_NAME_SYSTEM_AMMOUNT = "MontoSys";
        public const String TAG_NAME_ACCOUNTING_ENTRY_TYPE_ID = "IdTipo";
        public const String TAG_NAME_ACCOUNTING_ENTRY_ID = "IdAsiento";
        public const String TAG_NAME_ACCOUNTING_ENTRY_DOC_DATE = "FechaDoc";
        public const String TAG_NAME_ACCOUNTING_ENTRY_ACC_DATE = "FechaCont";
        public const String TAG_NAME_ACCOUNTING_ENTRY_REF1 = "Ref1";
        public const String TAG_NAME_ACCOUNTING_ENTRY_REF2 = "Ref2";
        public const String TAG_NAME_ACCOUNTING_ENTRY_REF3 = "Ref3";
        public const String TAG_NAME_ACCOUNTING_ENTRY_SEASON_ID = "IdTemporada";
        #endregion

        #region Accounting Entry XML Tags
        public const String ACCOUNTING_ENTRY_NODE_NAME = "Asiento";
        public const String DOC_CODE_NODE_NAME = "CodigoDoc";
        public const String ACC_DATE_NODE_NAME = "FechaCont";
        public const String REF1_NODE_NAME = "Ref1";
        public const String REF2_NODE_NAME = "Ref2";
        public const String REF3_NODE_NAME = "Ref3";
        #endregion 

        #region Auxiliar Account XML Tags
        public const String AUXILIAR_ROOT_NAME = "Cuentas";
        public const String AUXILIAR_ACCOUNT_NODE_NAME = "CuentaAuxiliar";
        public const String AUXILIAR_DETAILS_NODE_NAME = "Detalles";
        public const String AUXILIAR_CURRENCY_NODE_NAME = "Moneda";
        public const String AUXILIAR_ID_NODE_NAME = "IdCuenta";
        public const String AUXILIAR_NAME_NODE_NAME = "Nombre";
        public const String AUXILIAR_CODE_NODE_NAME = "Codigo";
        public const String AUXILIAR_OWNER_TYPE_NODE_NAME = "TipoDueño";
        public const String AUXILIAR_CREDIT_LIMIT_NODE_NAME = "LimiteCredito";
        public const String AUXILIAR_AMMOUNT_NODE_NAME = "Saldo";
        public const String AUXILIAR_OWNER_NODE_NAME = "NombreDueño";
        public const String AUXILIAR_TYPE_NODE_NAME = "TipoCuenta";
        public const String AUXILIAR_PAY_NODE_NAME = "CondicionPago";
        public const String AUXILIAR_FATHER_NODE_NAME = "IdCuentaMayor";
        public const String AUXILIAR_CURRENCY_ID_NODE_NAME = "IdMoneda";
        public const String AUXILIAR_CURRENCY_ABREV_NODE_NAME = "Abreviacion";
        public const String AUXILIAR_CURRENCY_NAME_NODE_NAME = "NombreMoneda";
        public const String AUXILIAR_CURRENCY_SYMBOL_NODE_NAME = "Simbolo";
        public const String AUXILIAR_AL_DEBE_NODE_NAME = "AlDebe";
        #endregion

        #region SpecialAccount XML Tags
        public const String TAG_NAME_SPECIAL_ACCOUNT_ID = "IdTipoCuentaEspecial";
        public const String TAG_NAME_SPECIAL_ACCOUNT_NOMBRE = "Nombre";
        public const String TAG_NAME_SPECIAL_ACCOUNT_IDCTA = "IdCuenta";
        #endregion

        #region OpenDoc XML Tags
        public const String OPEN_DOC_NODE_NAME = "TDoc";            
        public const String TAG_NAME_OPEN_DOCS_ID = "IdDocumentoContable";
        public const String TAG_NAME_OPEN_DOCS_COD = "CodigoDocumento";
        public const String TAG_NAME_OPEN_DOCS_TYPE = "TipoDoc";
        public const String TAG_NAME_OPEN_DOCS_EXP_DATE = "FechaEntregaVencimiento";
        public const String TAG_NAME_OPEN_DOCS_AMOUNT = "MontoDocumento";
        public const String TAG_NAME_OPEN_DOCS_CURRENCY = "IdMoneda";
        #endregion

        #region Document XML Tags
        public const String DOC_NODE_NAME = "CA";
        public const String TAG_NAME_DOC_ID = "IdDocumentoContable";
        public const String TAG_NAME_DOC_COD = "CodigoDocumento";
        public const String TAG_NAME_DOC_OWNER = "NombreDueno";
        public const String TAG_NAME_DOC_CREATE_DATE = "FechaContabilizacion";
        public const String TAG_NAME_DOC_EXP_DATE = "FechaEntregaVencimiento";
        public const String TAG_NAME_DOC_ACCOUNT = "NombreCuentaAuxiliar";
        public const String TAG_NAME_DOC_CURRENCY = "IdMoneda";
        #endregion

        #region DocDetail XML Tags
        public const String DOC_DETAIL_NODE_NAME_ARTICULO = "A";
        public const String DOC_DETAIL_NODE_NAME_ART_X_DET = "AxD";
        public const String DOC_DETAIL_NODE_NAME_UM = "UM";
        public const String DOC_DETAIL_NODE_NAME_BODEGA = "B";
        public const String DOC_DETAIL_NODE_NAME_IMPUESTO = "TI";
        public const String TAG_NAME_DOC_DETAIL_COD = "CodigoArtigulo";
        public const String TAG_NAME_DOC_DETAIL_DESCRIPCION = "Descripcion";
        public const String TAG_NAME_DOC_DETAIL_CANTIDAD = "Cantidad";
        public const String TAG_NAME_DOC_DETAIL_BODEGA = "Nombre";
        public const String TAG_NAME_DOC_DETAIL_UM = "Acronimo";
        public const String TAG_NAME_DOC_DETAIL_PRECIO = "PrecioCompraUnitario";
        public const String TAG_NAME_DOC_DETAIL_IMPUESTO = "Acrónimo";
        public const String TAG_NAME_DOC_DETAIL_PERCENTAGE = "Porcentaje"; 
        #endregion

        #region Xml Tags Extern Invoice
        public const String TAG_ROOT_NAME_DOCUMENTS = "Documentos";
        public const String TAG_NODE_NAME_DOCUMENT = "Documento";
        public const String TAG_NODE_NAME_ITEM = "Item";

        public const String TAG_ATT_NAME_DOC_CODE = "codigo";
        public const String TAG_ATT_NAME_DOC_POST_DATE = "fechaEmision";
        public const String TAG_ATT_NAME_DOC_DEL_DATE = "fechaVencimiento";
        public const String TAG_ATT_NAME_DOC_CURRENCY = "moneda";
        public const String TAG_ATT_NAME_DOC_CLIENT = "codigoSocioNegicio";

        public const String TAG_ATT_NAME_ITEM_CODE = "codigoArticulo";
        public const String TAG_ATT_NAME_ITEM_ROOM = "bodega";
        public const String TAG_ATT_NAME_ITEM_QUANTITY = "cantidad";
        public const String TAG_ATT_NAME_ITEM_TAX = "impuesto";
        #endregion

        #region Configuration Information
        public const int IS_CLIENT_CODE = 1;
        public const int IS_PROVIDER_CODE = 2;

        public const int UNIT_PRICE_INDEX = 3;
        public const int TOTAL_PRICE_INDEX = 5;

        public const int LOCAL_AMOUNT_INDEX = 0;
        public const int SYSTEM_AMOUNT_INDEX = 1;

        public const String DB_CONN = "DATA_BASE_CONNECTION";
        public const String AS_ACCOUNTING_ENTRY = "AS";
        public const String PE_ACCOUNTING_ENTRY = "PE";
        public const String PR_ACCOUNTING_ENTRY = "PR";
        public const String OC_ACCOUNTING_ENTRY = "OC";
        public const String OV_ACCOUNTING_ENTRY = "OV";
        public const String EM_ACCOUNTING_ENTRY = "EM";
        public const String EE_ACCOUNTING_ENTRY = "EE";
        public const String FP_ACCOUNTING_ENTRY = "FP";
        public const String FC_ACCOUNTING_ENTRY = "FC";
        public const String NC_ACCOUNTING_ENTRY = "NC";
        public const String IE_ACCOUNTING_ENTRY = "IE";
        public const String II_ACCOUNTING_ENTRY = "II";

        //ToDo: pasar esto al app config
        public const String LOCAL_TYPE = "Moneda local";
        public const String SYSTEM_TYPE = "Moneda sistema";
        public const String ADDED_TYPE = "Moneda agregada";

        public const String ACTIVE_TYPE = "Activos";
        public const String PASIVE_TYPE = "Pasivos";
        public const String PATRIMONY_TYPE = "Capital";
        public const String INCOME_TYPE = "Ingresos";
        public const String OUTCOME_TYPE = "Gastos";
        public const String OINCOME_TYPE = "Otros Ingresos";
        public const String OOUTCOME_TYPE = "Otros Gastos";

        public const String SALES_TYPE_CODE = "VE";
        public const String EXTRAORDINARY_INCOME_TYPE_CODE = "PE";
        public const String RETAINED_EARNINGS_TYPE_CODE = "UR";
        public const String DIVIDENDS_TYPE_CODE = "DI";
        public const String INCOME_TAX_TYPE_CODE = "IR";
        public const String PROFIT_AND_LOSS_CODE = "PG";
        public const String DIVIDENDS_TO_PAY_CODE = "DP";
        public const String INCOME_TAX_TO_PAY_CODE = "IP";
        public const String BANKING_ACCOUNT_CODE = "CB";
        public const String ALLOCATION_INVENTORY_CODE = "ID";
        public const String SALES_TAX_CODE = "IV";
        public const String SALES_REFUND_CODE = "DV";

        public const int NUM_DEFAULT_ACCOUNTS = 8;
        public const int MAX_NUM_LEVELS = 5;
        public const int CURRENCY_ABBREVIATION_LENGTH = 3;
        public const int MAX_ACCOUNT_CODE_CHAR = 15;

        public const String CLIENT_AUX_ACCOUNT = "cliente";
        public const String PROVIDER_AUX_ACCOUNT = "proveedor";
        public const String PERSON_TYPE_AUX_ACCOUNT = "persona";
        public const String COMPANY_TYPE_AUX_ACCOUNT = "empresa";

        public const int ACCOUNTING_ENTRY_CACHE_SIZE = 50;
        public const int STATUS_AMOUNT = 3;

        public const String OPEN_SEASON_STATUS = "Abierto";
        public const String CLOSED_SEASON_STATUS = "Cerrado";
        public const String OPEN_EXCEPT_SALES_SEASON_STATUS = "Abierto excepto ventas";

        public const String DEFAULT_TAX13 = "I13";
        public const String DEFAULT_VALUE = "Default";
        public const String DEFAULT_CURRENCY = "Colones";

        public const String FILE_FILTER_XML = "xml files (*.xml)|*.xml";
        public const String FILE_FILTER_TXT = "txt files (*.txt)|*.txt";
        public const String DEFAULT_EXTENSION = ".xml";
        public const String DEFAULT_EXTENSION_TXT = ".txt";
        public const String FILE_DIALOG_TITLE = "Escoja el archivo xml:";
        public const String FILE_DIALOG_TITLE2 = "Escoja el archivo txt:";

        #endregion

        #region SP Information
        // SP para obtener monedas y su tipo
        public const String SP_NAME_GET_CURRENCY_INFORMATION = "SP_OBTENER_INFORMACION_MONEDAS";

        //SP para obtener asientos
        public const String SP_NAME_GET_ACCOUNTING_ENTRIES = "SP_OBTENER_ASIENTOS";
        public const String SP_PARAM_GET_ACCOUNTING_ENTRIES_FILTER = "Filtros";

        //SP para obtener detalles de un asiento
        public const String SP_NAME_GET_ACCOUNTING_ENTRY_DETAILS = "SP_OBTENER_DETALLES_ASIENTO";
        public const String SP_PARAM_GET_ACCOUNTING_ENTRY_DETAILS_ID = "IdAsiento";

        // SP para agregar una moneda
        public const String SP_NAME_ADD_CURRENCY = "SP_AGREGAR_MONEDA";
        public const String SP_PARAM_ADD_CURRENCY_NAME = "NombreMoneda";
        public const String SP_PARAM_ADD_CURRENCY_ABBREVIATION = "Abreviacion";
        public const String SP_PARAM_ADD_CURRENCY_SYMBOL = "Simbolo";
        public const String SP_COLUMN_ADD_CURRENCY_NAME = "NombreMoneda";
        public const String SP_COLUMN_ADD_CURRENCY_SYMBOL = "Simbolo";
        public const String SP_COLUMN_ADD_CURRENCY_ABBREVIATION = "Abreviatura";
        public const String SP_COLUMN_ADD_CURRENCY_ID = "IdMoneda";

        // SP para editar una moneda
        public const String SP_NAME_EDIT_CURRENCY = "SP_EDITAR_MONEDA";
        public const String SP_PARAM_EDIT_CURRENCY_NAME = "Nombre";
        public const String SP_PARAM_EDIT_CURRENCY_ABBREVIATION = "Abreviacion";
        public const String SP_PARAM_EDIT_CURRENCY_SYMBOL = "Simbolo";
        public const String SP_PARAM_EDIT_CURRENCY_ID = "IdMoneda";

        // SP para eliminar una moneda
        public const String SP_NAME_DELETE_CURRENCY = "SP_ELIMINAR_MONEDA";
        public const String SP_PARAM_DELETE_CURRENCY_ID = "IdMoneda";

        // SP para establecer el nuevo tipo de cambio de una moneda
        public const String SP_NAME_SET_EXCHANGE_RATE = "SP_ESTABLECER_TIPO_CAMBIO";
        public const String SP_PARAM_SET_EXCHANGE_RATE_CURRENCY_ID = "IdMoneda";
        public const String SP_PARAM_SET_EXCHANGE_RATE_USER_ID = "IdUsuario";
        public const String SP_PARAM_SET_EXCHANGE_RATE_INITIAL_DATE = "FechaInicial";
        public const String SP_PARAM_SET_EXCHANGE_RATE_FINAL_DATE = "FechaFinal";
        public const String SP_PARAM_SET_EXCHANGE_RATE_LOCAL_AMOUNT = "CantidadLocal";

        // SP para obtener saldos de cuentas de una temporada
        public const String SP_NAME_GET_SEASON_BALANCES = "SP_OBTENER_SALDOS_TEMPORADA";
        public const String SP_PARAM_GET_SEASON_BALANCES_SEASON_ID = "IdTemporada";
        public const String SP_PARAM_GET_SEASON_BALANCES_CURRENCY_ID = "IdMoneda";
        public const String SP_COLUMN_GET_SEASON_BALANCES_ACCOUNT_ID = "IdCuenta";
        public const String SP_COLUMN_GET_SEASON_BALANCES_BALANCE = "Monto";
        public const String SP_COLUMN_GET_SEASON_BALANCES_INCREMENT_TYPE = "TipoIncremento";

        // SP para obtener saldos de cuentas de un periodo
        public const String SP_NAME_GET_PERIOD_BALANCES = "SP_OBTENER_SALDOS_PERIODO";
        public const String SP_PARAM_GET_PERIOD_BALANCES_PERIOD_ID = "IdPeriodo";
        public const String SP_PARAM_GET_PERIOD_BALANCES_CURRENCY_ID = "IdMoneda";
        public const String SP_COLUMN_GET_PERIOD_BALANCES_ACCOUNT_ID = "IdCuenta";
        public const String SP_COLUMN_GET_PERIOD_BALANCES_BALANCE = "Monto";
        public const String SP_COLUMN_GET_PERIOD_BALANCES_INCREMENT_TYPE = "TipoIncremento";

        // SP para obtener la información de la empresa
        public const String SP_NAME_GET_COMPANY_INFO = "SP_OBTENER_INFO_COMPANIA";
        public const String SP_COLUMN_GET_COMPANY_INFO_NAME = "Nombre";
        public const String SP_COLUMN_GET_COMPANY_INFO_LEGAL_ID = "CedulaJuridica";
        public const String SP_COLUMN_GET_COMPANY_INFO_PHONE = "Telefono";
        public const String SP_COLUMN_GET_COMPANY_INFO_FAX = "Fax";
        public const String SP_COLUMN_GET_COMPANY_INFO_LOGO = "Logotipo";
        public const String SP_COLUMN_GET_COMPANY_INFO_DIV_PERCENTAGE = "PorcentajeDividendos";
        public const String SP_COLUMN_GET_COMPANY_INFO_TAX_PERCENTAGE = "PorcentajeImpuestoRenta";

        //SP para obtener la lista de bodegas
        public const String SP_NAME_GET_STORES = "SP_OBTENER_BODEGAS";
        public const String SP_COLUMN_GET_STORES_NAME = "Nombre";
        public const String SP_COLUMN_GET_STORES_ID = "IdBodega";
        public const String SP_COLUMN_GET_STORES_CODE = "CodigoBodega";
        public const String SP_COLUMN_GET_STORES_SALES_ACCOUNT_ID = "IdCuentaVentas";
        public const String SP_COLUMN_GET_STORES_PURCHASES_ACCOUNT_ID = "IdCuentaCompras";
        public const String SP_COLUMN_GET_STORES_SALES_COST_ACCOUNT_ID = "IdCuentaCostoVentas";
        public const String SP_COLUMN_GET_STORES_INVENTORY_ACCOUNT_ID = "IdCuentaInventario";

        //SP para obtener los articulos 
        public const String SP_NAME_GET_ARTICLES = "SP_OBTENER_ARTICULOS";
        public const String SP_COLUMN_GET_ARTICLES_ID = "IdArticulo";
        public const String SP_COLUMN_GET_ARTICLES_CODE = "CodigoArtigulo";
        public const String SP_COLUMN_GET_ARTICLES_DESCRIPTION= "Descripcion";
        public const String SP_COLUMN_GET_ARTICLES_ID_UNIDAD_MEDIDA= "IdUnidadMedida";
        public const String SP_COLUMN_GET_ARTICLES_COMENT = "Comentarios";

        //SP para obtener los articulos documentos
        public const String SP_NAME_GET_DOCUMENT_ARTICLES = "SP_OBTENER_ARTICULOS_DOCUMENTOS";
        public const String SP_PARAM_GET_DOCUMENT_ARTICLES_DOC_ID = "IdDocumento";
        public const String SP_COLUMN_GET_DOCUMENT_ARTICLES_ID_STORE ="IdBodega";
        public const String SP_COLUMN_GET_DOCUMENT_ARTICLES_ID_ARTICLE = "IdArticulo";
        public const String SP_COLUMN_GET_DOCUMENT_ARTICLES_CANTIDAD = "Cantidad";
        public const String SP_COLUMN_GET_DOCUMENT_ARTICLES_PRECIO = "PrecioCompraUnitario";
        public const String SP_COLUMN_GET_DOCUMENT_ARTICLES_ID_TIPO_IMPUESTO = "IdTipoImpuesto";

        
        //SP para obtener los articulos con sus respectivas bodegas
        public const String SP_NAME_GET_STORES_ARTICLES = "SP_OBTENER_BODEGAS_ARTICULOS";
        public const String SP_COLUMN_GET_STORES_ARTICLES_ID_STORES = "IdBodega";
        public const String SP_COLUMN_GET_STORES_ARTICLES_ID_ARTICLE = "IdArticulo";
        public const String SP_COLUMN_GET_STORES_ARTICLES_ID_COUNT_INVENT = "IdCuentaInventario";
        public const String SP_COLUMN_GET_STORES_ARTICLES_ID_COUNT_COST_SALE = "IdCuentaCostoVentas";
        public const String SP_COLUMN_GET_STORES_ARTICLES_ID_COUNT_BUY = "IdCuentaCompras";
        public const String SP_COLUMN_GET_STORES_ARTICLES_ID_COUNT_SALE = "IdCuentaVentas";
        public const String SP_COLUMN_GET_STORES_ARTICLES_STOCK = "Stock";
        public const String SP_COLUMN_GET_STORES_ARTICLES_COMMITED = "Comprometido";
        public const String SP_COLUMN_GET_STORES_ARTICLES_REQUESTED = "Solicitado";
        public const String SP_COLUMN_GET_STORES_ARTICLES_COST_UNIT = "CostoUnitario";

        //SP para editar una bodega existente
        public const String SP_NAME_EDIT_STORE = "SP_EDITAR_BODEGA";
        public const String SP_PARAM_EDIT_STORE_CODE = "Codigo";
        public const String SP_PARAM_EDIT_STORE_ID = "Id";
        public const String SP_PARAM_EDIT_STORE_NAME = "Nombre";
        public const String SP_PARAM_EDIT_STORE_SALES_ACCOUNT = "CuentaVentas";
        public const String SP_PARAM_EDIT_STORE_PURCHASES_ACCOUNT = "CuentaCompras";
        public const String SP_PARAM_EDIT_STORE_INVENTORY_ACCOUNT = "CuentaInv";
        public const String SP_PARAM_EDIT_STORE_SALES_COST_ACCOUNT = "CuentaCostoV";

        //SP para agregar una bodega nueva
        public const String SP_NAME_NEW_STORE = "SP_AGREGAR_BODEGA";
        public const String SP_PARAM_NEW_STORE_CODE = "Codigo";
        public const String SP_PARAM_NEW_STORE_NAME = "Nombre";
        public const String SP_PARAM_NEW_STORE_SALES_ACCOUNT = "CuentaVentas";
        public const String SP_PARAM_NEW_STORE_PURCHASES_ACCOUNT = "CuentaCompras";
        public const String SP_PARAM_NEW_STORE_INVENTORY_ACCOUNT = "CuentaInv";
        public const String SP_PARAM_NEW_STORE_SALES_COST_ACCOUNT = "CuentaCostoV";
        public const String SP_COLUMN_NEW_STORE_ID = "IdBodega";

        // SP para obtener el catalogo contable
        public const String SP_NAME_GET_CATALOG = "SP_OBTENER_CATALOGO_CONTABLE";

        // SP para crear una nueva cuenta
        public const String SP_NAME_NEW_ACCOUNT = "SP_AGREGAR_CUENTA";
        public const String SP_PARAM_ADD_ACCOUNT_NAME = "Nombre";
        public const String SP_PARAM_ADD_ACCOUNT_FOREIGN_NAME = "NombreExtranjero";
        public const String SP_PARAM_ADD_ACCOUNT_TITULO = "EsTitulo";
        public const String SP_PARAM_ADD_ACCOUNT_CURRENCYID = "IdMoneda";
        public const String SP_PARAM_ADD_ACCOUNT_FATHERID = "IdCuentaPadre";
        public const String SP_PARAM_ADD_ACCOUNT_CODE = "Codigo";

        // SP para editar una cuenta existente
        public const String SP_NAME_EDIT_ACCOUNT = "SP_EDITAR_CUENTA";
        public const String SP_PARAM_EDIT_ACCOUNT_NAME = "Nombre";
        public const String SP_PARAM_EDIT_ACCOUNT_FOREIGN_NAME = "NombreExtranjero";
        public const String SP_PARAM_EDIT_ACCOUNT_TITULO = "EsTitulo";
        public const String SP_PARAM_EDIT_ACCOUNT_CURRENCYID = "IdMoneda";
        public const String SP_PARAM_EDIT_ACCOUNT_FATHERID = "Padre";
        public const String SP_PARAM_EDIT_ACCOUNT_ID = "IdCuenta";

        // SP para eliminar a una cuenta existente
        public const String SP_NAME_DELETE_ACCOUNT = "SP_ELIMINAR_CUENTA";
        public const String SP_PARAM_DELETE_ACCOUNT_ID = "IdCuenta";

        // SP para registrar un asiento
        public const String SP_NAME_ADD_ACCOUNTING_ENTRY = "SP_REGISTRAR_ASIENTO";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_SEASON_ID = "IdTemporada";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_DOCUMENT_DATE = "FechaDocumento";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_ACCOUNTING_DATE = "FechaContabilizacion";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_DOCUMENT_TYPE_ID = "IdTipoDocumento";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_USER_ID = "IdUsuario";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_REFERENCE1 = "Referencia1";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_REFERENCE2 = "Referencia2";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_REFERENCE3 = "Referencia3";
        public const String SP_PARAM_ADD_ACCOUNTING_ENTRY_ACCOUNTS = "Cuentas";

        // SP para actualizar el saldo de una cuenta auxiliar
        public const String SP_NAME_UPDATE_AUXILIAR_ACCOUNT_BALANCE = "SP_ACTUALIZAR_SALDO_CUENTA_AUXILIAR";
        public const String SP_PARAM_UPDATE_AUXILIAR_ACCOUNT_BALANCE_AUX_ACC_ID = "IdCuentaAuxiliar";
        public const String SP_PARAM_UPDATE_AUXILIAR_ACCOUNT_BALANCE_INCREMENT = "IncrementoSaldo";
        public const String SP_PARAM_UPDATE_AUXILIAR_ACCOUNT_BALANCE_AL_DEBE = "IncrementoAlDebe";

        // SP para cargar los tipos de documento de los asientos
        public const String SP_NAME_GET_DOCUMENT_TYPE = "SP_OBTENER_TIPOS_DOCUMENTO";
        public const String SP_COLUMN_GET_DOCUMENT_TYPE_ID = "IdTipoDocumento";
        public const String SP_COLUMN_GET_DOCUMENT_CONSECUTIVE_NUMBER = "NumeroConsecutivo";
        public const String SP_COLUMN_GET_DOCUMENT_TYPE_ID_NAME = "Nombre";
        public const String SP_COLUMN_GET_DOCUMENT_TYPE_ID_DESCRIPTION = "Descripcion";

        // SP para el login de usuarios
        public const String SP_NAME_LOGIN_USER = "SP_AUTENTICAR_USUARIO";
        public const String SP_PARAM_LOGIN_USERNAME = "nombre_usuario";
        public const String SP_PARAM_LOGIN_PASSWORD = "contrasena";
        public const String SP_COLUMN_LOGIN_USER_ID = "IdUsuario";
        public const String SP_COLUMN_LOGIN_NAME = "Nombre";
        public const String SP_COLUMN_LOGIN_USERNAME = "Username";
        public const String SP_COLUMN_LOGIN_COMPANY = "Compania";
        //***************************************************************
        //Sp para agregar un nuevo Periodo
        public const String SP_NAME_ADD_PERIOD = "SP_AGREGAR_PERIODO";
        public const String SP_PARAM_ADD_PERIOD_ID_TIPO = "IdTipo";
        public const String SP_PARAM_ADD_PERIOD_NOMBRE = "Nombre";
        public const String SP_PARAM_ADD_PERIOD_FECHA_INICIO = "FechaInicio";
        public const String SP_PARAM_ADD_PERIOD_FECHA_FIN = "FechaFin";
        public const String SP_COLUMN_ADD_PERIOD_ID_TIPO = "IdTipo";
        public const String SP_COLUMN_ADD_PERIOD_NOMBRE = "Nombre";
        public const String SP_COLUMN_ADD_PERIOD_FECHA_INICIO = "FechaInicio";
        public const String SP_COLUMN_ADD_PERIOD_FECHA_FIN = "FechaFin";
        public const String SP_COLUMN_ADD_PERIOD_ID = "IdPeriodo";

        //SP para obtener el periodo contable
        public const String SP_NAME_GET_PERIODS = "SP_OBTENER_INFO_PERIODOS";

        //Sp para agregar una nueva Temporada
        public const String SP_NAME_NEW_SEASON = "SP_AGREGAR_TEMPORADA";
        public const String SP_PARAM_ADD_SEASON_NOMBRE = "NombreTemporada";
        public const String SP_PARAM_ADD_SEASON_FECHA_INICIO = "FechaInicio";
        public const String SP_PARAM_ADD_SEASON_FECHA_FIN = "FechaFin";
        public const String SP_PARAM_ADD_SEASON_FECHA_INICIO_VENCIMIENTO = "FechaInicioVencimiento";
        public const String SP_PARAM_ADD_SEASON_FECHA_FIN_VENCIMIENTO = "FechaFinalVencimiento";
        public const String SP_PARAM_ADD_SEASON_ID_PERIODO = "IdPeriodo";
      //  public const String SP_PARAM_ADD_SEASON_ID_ESTADO = "IdEstado";

        //Sp para modificar el estado de una temporada
        public const String SP_NAME_MOD_SEASON = "SP_MODIFICAR_TEMPORADA_CONTABLE";
        public const String SP_PARAM_MOD_ID_SEASON = "IdTemporada";
        public const String SP_PARAM_MOD_ID_ESTADO = "IdEstado";

        //Sp para obtener cuentas especiales
        public const String SP_NAME_GET_SPECIAL_ACCOUNTS = "SP_OBTENER_ASOCIACION_CUENTAS_ESPECIALES";
        public const String SP_COLUMN_GET_SPECIAL_ACCOUNTS_CODE = "CodigoCuentaEspecial";
        public const String SP_COLUMN_GET_SPECIAL_ACCOUNTS_ACCOUNT_ID = "IdCuenta";

        // SP para crear/modificar/elimina una nueva cuenta auxiliar
        public const String SP_NAME_CREATE_AUXILIAR_ACCOUNT = "SP_AGREGAR_CUENTA_AUXILIAR";
        public const String SP_NAME_EDIT_AUXILIAR_ACCOUNT = "SP_EDITAR_CUENTA_AUXILIAR";
        public const String SP_NAME_DELETE_AUXILIAR_ACCOUNT = "SP_ELIMINAR_CUENTA_AUXILIAR";

        public const String SP_PARAM_AUXILIAR_NAME = "nombreCuenta";
        public const String SP_PARAM_AUXILIAR_OWNER = "nombreDueño";
        public const String SP_PARAM_AUXILIAR_CODE = "codigoSocio";
        public const String SP_PARAM_AUXILIAR_OWNER_TYPE = "tipoDueño";
        public const String SP_PARAM_AUXILIAR_CURRENCY = "idMoneda";
        public const String SP_PARAM_AUXILIAR_CREDIT_LIMIT = "limiteCredito";
        public const String SP_PARAM_AUXILIAR_FATHER_ACCOUNT = "idCuentaMayor";
        public const String SP_PARAM_AUXILIAR_PAY_COND = "condicionPago";
        public const String SP_PARAM_AUXILIAR_TYPE = "idTipoCuentaAux";
        public const String SP_PARAM_AUXILIAR_ID = "idCuenta";

        // SP para obtener cuentas auxiliares
        public const String SP_NAME_GET_AUXILIAR_ACCOUNTS = "SP_OBTENER_CUENTAS_AUXILIARES";

        //Sp para crear/eliminar una condición de pago
        public const String SP_NAME_CREATE_PAY_COND = "SP_AGREGAR_COND_PAGO";
        public const String SP_NAME_DELETE_PAY_COND = "SP_ELIMINAR_COND_PAGO";
        public const String SP_NAME_GET_PAY_COND = "SP_OBTENER_COND_PAGO";

        public const String SP_PARAM_PAY_COND_NAME = "nombre";
        public const String SP_PARAM_PAY_COND_DAYS = "dias";

        //Sp para modificar la compañia
        public const String SP_NAME_MOD_COMPANY = "SP_MODIFICAR_COMPAÑIA";
        public const String SP_PARAM_MOD_ID_LEGAL = "CedulaJuridica";
        public const String SP_PARAM_MOD_NAME_COMPANY = "Nombre";
        public const String SP_PARAM_MOD_FAX = "Fax";
        public const String SP_PARAM_MOD_PHONE = "Telefono";
        public const String SP_PARAM_MOD_DIV_PERCENTAGE = "PorcentajeDividendos";
        public const String SP_PARAM_MOD_TAX_PERCENTAGE = "PorcentajeImpuestoRenta";

        // SP CONFIGURACION DE CUENTAS ---------------------------------------------------
        //Sp para obtener los tipos de cuentas especiales
        public const String SP_NAME_GET_SPECIAL_ACCOUNTS_TYPE = "SP_OBTENER_TIPO_CUENTAS_ESPECIALES";
        public const String SP_COLUMN_GET_SPECIAL_ACCOUNTS_TYPE_ACCOUNT_ID = "IdCuenta";
        public const String SP_COLUMN_GET_SPECIAL_ACCOUNTS_TYPE_ACCOUNT_NOMBRE = "Nombre";
        public const String SP_COLUMN_GET_SPECIAL_ACCOUNTS_TYPE_CODIGO = "CodigoCuentaEspecial";

        //Sp para obtener las cuentas definidas como una cuenta especial
        public const String SP_NAME_GET_SPECIAL_ACCOUNT = "SP_OBTENER_CUENTAS_ESPECIALES ";
        public const String SP_PARAM_SPECIAL_ACCOUNT_ID = "idTipoCuentaEsp";
        public const String SP_COLUMN_GET_SPECIAL_ACCOUNT_ID = "IdCuenta";
        public const String SP_COLUMN_GET_SPECIAL_ACCOUNT_NOMBRE = "Nombre";

        //Sp para obtener las cuentas no definidas como una cuenta especial
        public const String SP_NAME_GET_NOT_SPECIAL_ACCOUNT = "SP_OBTENER_CUENTAS_NO_ESPECIALES";
        public const String SP_PARAM_NOT_SPECIAL_ACCOUNT_ID = "idTipoCuentaEsp";
        public const String SP_COLUMN_GET_NOT_SPECIAL_ACCOUNT_ID = "IdCuenta";
        public const String SP_COLUMN_GET_NOT_SPECIAL_ACCOUNT_NOMBRE = "Nombre";

        //Sp para agregar una cuenta especial
        public const String SP_NAME_NEW_SPECIAL_ACCOUNT = "SP_AGREGAR_CUENTA_ESPECIAL";
        public const String SP_PARAM_ADD_SPECIAL_ACCOUNT_ID_TIPO = "idTipoCuentaEsp";
        public const String SP_PARAM_ADD_SPECIAL_ACCOUNT_ID_CTA = "IdCuenta";

        //Sp para eliminar una cuenta especial
        public const String SP_NAME_DELETE_SPECIAL_ACCOUNT = "SP_ELIMINAR_CUENTA_ESPECIAL";
        public const String SP_PARAM_DELETE_SPECIAL_ACCOUNT_ID_TIPO = "idTipoCuentaEsp";
        public const String SP_PARAM_DELETE_SPECIAL_ACCOUNT_ID_CTA = "IdCuenta";
        // -------------------------------------------------------------------------------

        // SP CONSULTAR DOCUMETOS --------------------------------------------------------
        // SP para obtener cuentas auxiliares
        public const String SP_NAME_GET_AUXILIAR_ACCOUNTS_BY_TYPE = "SP_OBTENER_CUENTAS_AUXILIARES_POR_TIPO";
        //SP_PARAM_AUXILIAR_TYPE

        // SP para obtener los documentos abiertos (FP,FC,NC) según idCuentaAuxiliar
        public const String SP_NAME_GET_OPEN_DOCS = "SP_OBTENER_DOCS_ABIERTOS";
        public const String SP_PARAM_OPEN_DOCS_CTA_AUX_ID = "IdCuentaAuxiliar";
        public const String SP_COLUMN_OPEN_DOCS_ID = "IdDocumentoContable";
        public const String SP_COLUMN_OPEN_DOCS_COD = "CodigoDocumento";
        public const String SP_COLUMN_OPEN_DOCS_TYPE = "TipoDoc";
        public const String SP_COLUMN_OPEN_DOCS_EXP_DATE = "FechaEntregaVencimiento";
        public const String SP_COLUMN_OPEN_DOCS_AMOUNT = "MontoDocumento";

        // SP para obtener el detalle de un documento
        public const String SP_NAME_GET_DOC_DETAIL = "SP_OBTENER_DETALLE_DOCUMENTO";
        public const String SP_PARAM_DOC_DETAIL_DOC_ID = "idDocumentoContable";

        // SP para obtener el emcabezado de un documento
        public const String SP_NAME_GET_DOC_ENCABEZADO = "SP_OBTENER_ENCABEZADO_DOCUMENTO";
        public const String SP_PARAM_DOC_ENCABEZADO_DOC_ID = "idDocumentoContable";
        
        // -------------------------------------------------------------------------------

        // SP para crear una compañía
        public const String SP_NAME_CREATE_COMPANY = "SP_AGREGAR_COMPANIA";
        public const String SP_PARAM_CREATE_COMPANY_LEGAL_ID = "CedulaJuridica";
        public const String SP_PARAM_CREATE_COMPANY_COMPANY_NAME = "NombreCompania";
        public const String SP_PARAM_CREATE_COMPANY_FAX = "Fax";
        public const String SP_PARAM_CREATE_COMPANY_PHONE = "Telefono";
        public const String SP_PARAM_CREATE_COMPANY_LOGO = "Logo";
        public const String SP_PARAM_CREATE_COMPANY_ADMIN_NAME = "NombreAdmin";
        public const String SP_PARAM_CREATE_COMPANY_USERNAME = "Username";
        public const String SP_PARAM_CREATE_COMPANY_PASSWORD = "Password";
        public const String SP_PARAM_CREATE_COMPANY_DIV_PERCENTAGE = "PorcentajeDividendos";
        public const String SP_PARAM_CREATE_COMPANY_TAX_PERCENTAGE = "PorcentajeImpuestoRenta";

        // SP para obtener estados de las temporadas
        public const String SP_NAME_GET_SEASON_STATUS = "SP_OBTENER_ESTADOS_TEMPORADA";
        public const String SP_COLUMN_GET_SEASON_STATUS_ID = "IdEstadoTemporada";
        public const String SP_COLUMN_GET_SEASON_STATUS_NAME = "Descripcion";

        //SP para obtener los impuestos
        public const String SP_NAME_GET_IMPUESTOS = "SP_OBTENER_IMPUESTOS";
        public const String SP_COLUMN_GET_IMPUESTO_ID_TYPE_IMP = "IdTipoImpuesto";
        public const String SP_COLUMN_GET_IMPUESTO_NOMBRE = "Nombre";
        public const String SP_COLUMN_GET_IMPUESTO_PORC = "Porcentaje";
        public const String SP_COLUMN_GET_IMPUESTO_ACRONIMO = "Acrónimo";

        //SP para registrar transferencias
        public const String SP_NAME_REGISTER_TRANSFER = "SP_REGISTRAR_TRANSFERENCIA";
        public const String SP_PARAM_REGISTER_TRANSFER_DOCUMENT_ID = "IdDocumento";
        public const String SP_PARAM_REGISTER_TRANSFER_ACCOUNT_ID = "IdCuentaBancaria";
        public const String SP_PARAM_REGISTER_TRANSFER_LOCAL_AMOUNT = "MontoLocal";
        //SP para obtener la informacion de bodegas de un articulo
        public const String SP_NAME_GET_ARTICLES_BY_STORE = "SP_OBTENER_ARTICULOS_X_BODEGA";
        public const String SP_PARAM_ARTICLES_BY_STORE = "idArticulo";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_ID_STORES = "IdBodega";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_ID_ITEM = "IdArticulo";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_ID_COUNT_INVENT = "IdCuentaInventario";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_ID_COUNT_COST_SALE = "IdCuentaCostoVentas";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_ID_COUNT_BUY = "IdCuentaCompras";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_ID_COUNT_SALE = "IdCuentaVentas";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_STOCK = "Stock";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_COMMITED = "Comprometido";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_REQUESTED = "Solicitado";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_COST_UNIT = "CostoUnitario";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_DESCRIPTION = "Descripcion";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_UM = "UM";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_COMENTS = "Comentarios";
        public const String SP_COLUMN_GET_ARTICLES_BY_STORE_ITEM_CODE = "CodigoArtigulo";

        //SP para obtener las unidades de medida
        public const String SP_NAME_GET_UM = "SP_OBTENER_UM";
        public const String SP_COLUMN_GET_UM_ID = "IdUnidadMedida";
        public const String SP_COLUMN_GET_UM_NAME = "Nombre";
        public const String SP_COLUMN_GET_UM_ACRONIMO = "Acronimo";

        //SP para editar una articulo existente
        public const String SP_NAME_EDIT_ITEM = "SP_EDITAR_ARTICULO";
        public const String SP_PARAM_EDIT_ITEM_ID = "IdArticulo";
        public const String SP_PARAM_EDIT_ITEM_CODE = "Codigo";
        public const String SP_PARAM_EDIT_ITEM_DESCRIPTION = "Descripcion";
        public const String SP_PARAM_EDIT_ITEM_COMENT = "Comentario";
        public const String SP_PARAM_EDIT_ITEM_UM = "IdUnidadMedida";
        public const String SP_PARAM_EDIT_ITEM_SALES_ACCOUNT = "IdCuentaVentas";
        public const String SP_PARAM_EDIT_ITEM_PURCHASES_ACCOUNT = "IdCuentaCompras";
        public const String SP_PARAM_EDIT_ITEM_INVENTORY_ACCOUNT = "IdCuentaInventario";
        public const String SP_PARAM_EDIT_ITEM_SALES_COST_ACCOUNT = "IdCuentaCostoVentas";
        public const String SP_PARAM_EDIT_ITEM_STORE_ID = "IdBodega";

        //SP para agregar un articulo nuevo
        public const String SP_NAME_NEW_ITEM = "SP_AGREGAR_ARTICULO";
        public const String SP_PARAM_NEW_ITEM_CODE = "CodigoArtigulo";
        public const String SP_PARAM_NEW_ITEM_DESCRIPTION = "Descripcion";
        public const String SP_PARAM_NEW_ITEM_COMENT = "Comentarios";
        public const String SP_PARAM_NEW_ITEM_UM_ID = "IdUnidadMedida";
        public const String SP_COLUMN_NEW_ITEM_ID = "IdArticulo";

        //SP para eliminar un articulo 
        public const String SP_NAME_DELETE_ITEM = "SP_ELIMINAR_ARTICULO";
        public const String SP_PARAM_DELETE_ITEM_ID = "IdArticulo";

        //SP para agregar una nueva foto por articulo
        public const String SP_NAME_NEW_ITEM_IMAGE = "SP_AGREGAR_FOTO_ARTICULO";
        public const String SP_PARAM_NEW_ITEM_IMAGE_CODE = "idArt";
        public const String SP_PARAM_NEW_ITEM_IMAGE_BYTES = "imagen";

        //SP para obtener las fotos de un articulo
        public const String SP_NAME_GET_ITEM_IMAGE = "SP_OBTENER_FOTOS_ARTICULO";
        public const String SP_COLUMN_GET_ITEM_IMAGE_ID = "IdFotosArticulo";
        public const String SP_COLUMN_GET_ITEM_IMAGE_BYTES = "Foto";
        public const String SP_PARAM_GET_ITEM_IMAGE_CODE = "idArt";        
        
        //-------------------- SPS para compra y venta ------------------------------

        // Sp para obtener los documentos no cancelados
        public const String SP_NAME_GET_UNCANCELLED_DOCS = "SP_OBTENER_DOCS_NO_CANCELADOS";
        public const String SP_COLUMN_DOCUMENT_ID = "IdDocumentoContable";
        public const String SP_COLUMN_DOCUMENT_CODE = "CodigoDocumento";
        public const String SP_COLUMN_DOCUMENT_DATE_CONT = "FechaContabilizacion";
        public const String SP_COLUMN_DOCUMENT_DATE_EXP = "FechaEntregaVencimiento";
        public const String SP_COLUMN_DOCUMENT_ID_AUXACCOUNT = "IdCuentaAuxiliar";
        public const String SP_COLUMN_DOCUMENT_ID_CURRENCY = "IdMoneda";
        public const String SP_COLUMN_DOCUMENT_BEFORE_TAX = "MontoAntesImpuestos";
        public const String SP_COLUMN_DOCUMENT_TAX = "MontoImpuesto";
        public const String SP_COLUMN_DOCUMENT_TOTAL = "MontoDocumento";
        public const String SP_COLUMN_DOCUMENT_TYPE = "TipoDocumento";
        public const String SP_COLUMN_DOCUMENT_STATUS = "NombreEstadoDocumentContable";

        // SP para actualizar el costo unitario
        public const String SP_NAME_UPDATE_UNIT_COST = "SP_ACTUALIZAR_COSTO_UNITARIO";
        public const String SP_PARAM_UPDATE_UNIT_COST_NEW_COST = "NuevoCosto";
        public const String SP_PARAM_UPDATE_UNIT_COST_ITEM_ID = "IdArticulo";
        public const String SP_PARAM_UPDATE_UNIT_COST_STORE_ROOM_ID = "IdBodega";

        // SP para actualizar la cantidad de articulos en Stock
        public const String SP_NAME_UPDATE_STOCK_AMOUNT = "SP_ACTUALIZAR_CANTIDAD_STOCK";
        public const String SP_PARAM_UPDATE_STOCK_AMOUNT_ADDED_STOCK = "CantidadAgregada";
        public const String SP_PARAM_UPDATE_STOCK_AMOUNT_ITEM_ID = "IdArticulo";
        public const String SP_PARAM_UPDATE_STOCK_AMOUNT_STORE_ROOM_ID = "IdBodega";

        // SP para incrementar en 1 el número consecutivo de un tipo de documento
        public const String SP_NAME_INCREASE_CONSECUTIVE_NUMBER = "AUMENTAR_NUMERO_CONSECUTIVO";
        public const String SP_PARAM_INCREASE_CONSECUTIVE_NUMBER_DOC_TYPE_NAME = "NombreTipoDocumento";

        // SP para guardar encabezado de documento
        public const String SP_NAME_SAVE_DOCUMENT = "SP_AGREGAR_DOCUMENTO";
        public const String SP_PARAM_SAVE_DOCUMENT_TYPE_ID = "IdTipoDocumento";
        public const String SP_PARAM_SAVE_DOCUMENT_AUX_ID = "IdCuentaAuxiliar";
        public const String SP_PARAM_SAVE_DOCUMENT_CONTA_DATE = "FechaContabilizacion";
        public const String SP_PARAM_SAVE_DOCUMENT_DELIV_DATE = "FechaEntregaVencimiento";
        public const String SP_PARAM_SAVE_DOCUMENT_CURRENCY_ID = "IdMoneda";
        public const String SP_PARAM_SAVE_DOCUMENT_AMOUNT_BEFORE_TAX = "MontoAntesImpuesto";
        public const String SP_PARAM_SAVE_DOCUMENT_TAX_AMOUNT = "MontoImpuesto";
        public const String SP_PARAM_SAVE_DOCUMENT_BASE_DOC_ID = "IdDocumentoBase";
        public const String SP_COLUMN_SAVE_DOCUMENT_DOC_ID = "IdDocumentoContable";

        // SP para guardar el artículo de una orden (compra o ventas)
        public const String SP_NAME_ADD_ORDER_DOC_ITEM = "SP_AGREGAR_ARTICULO_ORDEN";
        public const String SP_PARAM_ADD_ORDER_DOC_ITEM_DOC_ID = "IdDocumento";
        public const String SP_PARAM_ADD_ORDER_DOC_ITEM_STORE_ID = "IdBodega";
        public const String SP_PARAM_ADD_ORDER_DOC_ITEM_ITEM_ID = "IdArticulo";
        public const String SP_PARAM_ADD_ORDER_DOC_ITEM_DESCRIPTION = "Descripcion";
        public const String SP_PARAM_ADD_ORDER_DOC_ITEM_QUANTITY = "Cantidad";
        public const String SP_PARAM_ADD_ORDER_DOC_ITEM_UNIT_COST = "Precio";
        public const String SP_PARAM_ADD_ORDER_DOC_ITEM_TAX_ID = "IdTipoImpuesto";

        // SP para el logueo de un cliente en el erp
        public const String SP_NAME_GET_AUXID_FOR_CLIENT = "SP_OBTENER_IDAUX_CLIENTE";
        public const String SP_PARAM_USER_CLIENT_ID = "IdUsuario";
        public const String SP_COLUMN_USER_CLIENT_AUXID = "IdCuentaAuxiliar";

        // SP para eliminar bodegas
        public const String SP_NAME_DELETE_STORE_ROOM = "SP_ELIMINAR_BODEGA";
        public const String SP_PARAM_DELETE_STORE_ROOM_STORE_ID = "IdBodega";

        // SP para guardar el servicio de un documento de factura de cliente o nota de crédito
        public const String SP_NAME_ADD_DOC_SERVICE = "SP_AGREGAR_SERVICIO";
        public const String SP_PARAM_ADD_DOC_SERVICE_DOC_ID = "IdDocumento";
        public const String SP_PARAM_ADD_DOC_SERVICE_ACC_ID = "IdCuenta";
        public const String SP_PARAM_ADD_DOC_SERVICE_AMOUNT = "Monto";
        public const String SP_PARAM_ADD_DOC_SERVICE_DESCRIPTION = "Descripcion";
        public const String SP_PARAM_ADD_DOC_SERVICE_TAX_ID = "IdImpuesto";

        // SP para agregar un nuevo impuesto
        public const String SP_NAME_ADD_TAX = "SP_AGREGAR_IMPUESTO";
        public const String SP_PARAM_ADD_TAX_NAME = "NombreImpuesto";
        public const String SP_PARAM_ADD_TAX_CODE = "Acronimo";
        public const String SP_PARAM_ADD_TAX_PERCENTAGE = "Porcentaje";

        // SP para eliminar un nuevo impuesto
        public const String SP_NAME_DELETE_TAX = "SP_ELIMINAR_IMPUESTO";
        public const String SP_PARAM_DELETE_TAX_ID = "IdImpuesto";

        // SP para obtener servicios de un documento
        public const String SP_NAME_GET_DOC_SERVICES = "SP_OBTENER_SERVICIOS_DOC";
        public const String SP_PARAM_GET_DOC_SERVICES_DOC_ID = "IdDocumento";
        public const String SP_COLUMN_GET_DOC_SERVICES_DESCRIPTION = "Descripcion";
        public const String SP_COLUMN_GET_DOC_SERVICES_ACC_ID = "IdCuenta";
        public const String SP_COLUMN_GET_DOC_SERVICES_AMOUNT = "Monto";
        public const String SP_COLUMN_GET_DOC_SERVICES_TAX_ID = "IdTipoImpuesto";

        //public const String SP_NAME_GET_AUXID_FOR_CLIENT = "SP_OBTENER_IDAUX_CLIENTE";
        //public const String SP_PARAM_USER_CLIENT_ID = "IdUsuario";
        //public const String SP_COLUMN_USER_CLIENT_AUXID = "IdCuentaAuxiliar";

        // Para las facturas externas
        public const String SP_NAME_UPDATE_DOC_ID = "SP_ACTUALIZAR_DOC_ID";
        public const String SP_PARAM_UPDATE_DOC_ID_NEW = "codigoDocumento";
        // SP para obtener información de reportes de venta para el caso de rutas de venta
        public const String SP_NAME_GET_SALE_REPORT_DATA = "SP_OBTENER_INFO_VENTAS";
        public const String SP_PARAM_GET_SALE_REPORT_DATA_AUX_ID = "IdCuentaAuxiliar";
        public const String SP_PARAM_GET_SALE_REPORT_DATA_ITEM_ID = "IdArticulo";
        public const String SP_COLUMN_GET_SALE_REPORT_DATA_AUX_ID = "IdCuentaAuxiliar";
        public const String SP_COLUMN_GET_SALE_REPORT_DATA_ITEM_ID = "IdArticulo";
        public const String SP_COLUMN_GET_SALE_REPORT_DATA_DOC_ID = "IdDocumentoContable";
        public const String SP_COLUMN_GET_SALE_REPORT_DATA_CURRENCY_ID = "IdMoneda";
        public const String SP_COLUMN_GET_SALE_REPORT_DATA_QUANTITY = "Cantidad";
        public const String SP_COLUMN_GET_SALE_REPORT_DATA_UNIT_COST = "PrecioCompraUnitario";
        public const String SP_COLUMN_GET_SALE_REPORT_DATA_DATE = "FechaContabilizacion";
        #endregion


        #region Mensajes de error y éxito para bitácora de revisión de facturas externas
        public const String MESSAGE_REGISTER_DOC_BEGIN1 = "######### Registro del documento de código: ";
        public const String MESSAGE_REGISTER_DOC_BEGIN2 = " #########\n";
        public const String MESSAGE_ERROR_DOC_NOT_FOUND = "Error: el documento especificado no se encuentra entre la lista de los documentos válidos";
        public const String MESSAGE_REGISTER_DOC_SUCCESS = "El registro del documento fue exitoso!";
        public const String MESSAGE_SEPARATOR = "##########################################################################\n";
        public const String MESSAGE_CHECK_DOC_BEGIN1 = "------------- Revisión para el documento de código: ";
        public const String MESSAGE_CHECK_DOC_BEGIN2 = " -------------\n";
        public const String MESSAGE_DOC_CLIENT_NOT_FOUND = "Error: la cuenta auxiliar del cliente especificado no se encuentra registrada en el sistema";
        public const String MESSAGE_DOC_CURRENCY_NOT_FOUND = "Error: el tipo de moneda para el documento no es correcto o no existe en el sistema";
        public const String MESSAGE_DOC_ITEMS_ERROR = "Error: occurrió un error en los artículos ingresados para el documento";
        public const String MESSAGE_CHECK_DOC_END1 = "El documento ";
        public const String MESSAGE_CHECK_DOC_END2 = " ha sido ingresado correctamente";
        public const String MESSAGE_CHECK_DOC_END = "------------- Finalización de la revisión -------------\n";
        public const String MESSAGE_CHECK_ITEM_ID_NOT_FOUND = "Error: el código del artículo especificado no es correcto o no existe en el sistema";
        public const String MESSAGE_CHECK_ITEM_ROOM_NOT_FOUND = "Error: no existe en el sistema la bodega especificada";
        public const String MESSAGE_CHECK_NOT_ENOUGH_ITEMS = "Error: no hay suficiente cantidad de artículos en Stock para la bodega";
        public const String MESSAGE_CHECK_ITEM_TAX_NOT_FOUND = "Error: el tipo de impuesto especificado no es correcto o no existe en el sistema";
        public const String MESSAGE_CHECK_ITEM_SUCCESS1 = "El artículo ";
        public const String MESSAGE_CHECK_ITEM_SUCCESS2 = " fue ingresado correctamente";
        #endregion

    }
}